[Qt] How to get rid of OCI.dll dependency when compiling static

Posted by STL on Stack Overflow See other posts from Stack Overflow or by STL
Published on 2010-05-11T17:42:33Z Indexed on 2010/05/11 17:44 UTC
Read the original article Hit count: 306

Filed under:
|
|
|
|

Hi,

My application accesses an Oracle database through Qt's QSqlDatabase class.

I'm compiling Qt as static for the release build, but I can't seem to be able to get rid of OCI.dll dependency. I'm trying to link against oci.lib (as available in Oracle's Instant Client with SDK).

Here's my configure line :

configure -qt-libjpeg -qt-zlib -qt-libpng -nomake examples -nomake demos -no-exceptions -no-stl -no-rtti -no-qt3support -no-scripttools -no-openssl -no-opengl -no-phonon -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique -static -release -opensource -plugin-sql-oci -plugin-sql-sqlite -platform win32-msvc2005

I link against oci.h and oci.lib in the SDK's folder by using :

set INCLUDE=C:\oracle\instantclient\sdk\include;%INCLUDE%
set LIB=C:\oracle\instantclient\sdk\lib\msvc;%LIB%

Then, once Qt is compiled, I use the following lines in my *.pro file :

QT += sql
CONFIG += static
LIBS += C:\oracle\instantclient\sdk\lib\msvc\oci.lib
QTPLUGIN += qsqloci

Then, in my main.cpp, I add the following commands to statically compile OCI plugin in the application :

#include <QtPlugin>

Q_IMPORT_PLUGIN(qsqloci)

After compiling the project, I test it on my workstation and it works (as I have Oracle Instant Client installed). When I try on another workstation, I always get the message:

This application has failed to start because OCI.dll was not found. Re-installing this application may fix this problem.

I don't understand why I still need OCI.dll, as my statically linked application is supposed to link to oci.lib instead.

Is there any Qt people here that might have a solution for me ?

Thanks a lot !

STL

© Stack Overflow or respective owner

Related posts about qt

Related posts about Oracle